package thread;

import java.util.Arrays;

class SimpleArrayList {
    //通过数组来存储元素
    private Object[] array;
    private int size;
    public SimpleArrayList(int capacity){
        this.array = new Object[capacity];
    }
    //向array数组中size位置添加元素
    public synchronized void add(Object obj){ //同步方法（对象锁默认this,也称之为同步监视器）
//        synchronized (this){//同步代码块
            //1.判断数组是否满了，如果满了，扩容
            if(size == array.length){
                //数组扩容，创建一个原有数组2倍大小的新数组
                array = Arrays.copyOf(array,array.length*2);
            }
            //2.添加元素
            array[size] = obj;
            //3.有效元素加一
            size++;
//        }
    }

    //移除对像
    public synchronized void remove(Object obj){
        for(int i=0;i<size;i++){
            if(array[i].equals(obj)){
                //将i位置的元素后面的元素往前移动
                for(int j=i;j<size-1;j++){
                    array[j] = array[j+1];
                }
                //有效元素-1
                size--;
                //将最后一个元素置为null
                array[size] = null;
               break;
            }
        }
    }
    public int size(){
        return size;
    }
}
/**
 * @Author Justin Parker
 * @Date 2024/7/20 0020 10:59
 * @Version 1.0
 */
public class SimpleArrayListDemo01 {
    public static void main(String[] args) throws InterruptedException {
        //1.构建集合对象
        SimpleArrayList list = new SimpleArrayList(16);
        //创建两个线程，向list中添加元素
        Thread t1 = new Thread() {
            public void run() {
                for(int i=0;i<100;i++){
                    list.add(i);
                }}
        };
        Thread t2 = new Thread() {
            public void run() {
                for(int i=0;i<200;i++){
                    list.add(i);
                }}
        };
        t1.start();
        t2.start();

        Thread.sleep(500);
        System.out.println("list中元素个数："+list.size());
        }
    }

